#include <iostream>
#include <string>

#include "1.h"

int main() {
  // std::cout << lei::abs<6>::value << std::endl;
  // std::cout << lei::abs<-30>::value << std::endl;

  // std::cout << lei::gcd<4, 6>::value << std::endl;
  // std::cout << lei::gcd<3, 30>::value << std::endl;

  std::cout << lei::false_type::value << std::endl;
  std::cout << lei::true_type::value << std::endl;
  std::cout << lei::integral_constant<int, 65>::value << std::endl;

  std::cout << std::boolalpha;
  std::cout << lei::has_type_member<int>::value << std::endl;

  class XXX {
   public:
    using type = int;
  };

  std::cout << lei::has_type_member<XXX>::value << std::endl;
  std::cout << lei::is_one_of<int, double, float>::value << std::endl;
  std::cout << lei::is_one_of<int, double, int, float>::value << std::endl;

  // std::cout << lei::gcd<3, 30>::value << std::endl;
  // std::cout << lei::gcd<3, 30>::value << std::endl;
  // std::cout << lei::gcd<3, 30>::value << std::endl;
  // std::cout << lei::gcd<3, 30>::value << std::endl;
  // std::cout << lei::gcd<3, 30>::value << std::endl;
  return 0;
}
// g++ -o main main.cc -std=c++17
